#include <sys/time.h>
#include "app_common.h"
#include <string.h>
#include <stdlib.h> // NULL
long app_common_getCurrentTime(void)
{
    struct timeval tv;
    // 获取当前时间
    gettimeofday(&tv, NULL);
    // tv_sec: 秒  tv_usec: 微秒
    return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}

char *app_common_charsToHexstr(char *chars, int chars_len)
{
    // abcd  61 62 63 64
    //  每个字符需要两位16进制数 + 1 个 '\0' 结束符
    char *hex_str = (char *)malloc(chars_len * 2 + 1);

    for (int i = 0; i < chars_len; i++)
    {
        // 用 printf 格式化字符为 16 进制形式并写入到 hex_str
        sprintf((char *)(hex_str + i * 2), "%02X", chars[i]);
    }

    hex_str[chars_len * 2] = '\0'; // 以 null 结尾

    return hex_str;
}

char *app_common_hexstrToChars(char *hex_chars, int *chars_len)
{
    // abcd  61 62 63 64
    int hex_len = strlen(hex_chars);
    *chars_len = hex_len / 2;

    char *chars = malloc(*chars_len + 1);

    for (int i = 0; i < *chars_len; i += 2)
    {
        sscanf(hex_chars + i, "%02X", chars + (i / 2));
    }
}
